home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 1998 November / IRIX 6.5.2 Base Documentation November 1998.img / usr / share / catman / g_man / cat3 / OpenGL-ftn / fglaccum.z / fglaccum
Text File  |  1998-10-20  |  12KB  |  202 lines

  1.  
  2.  
  3.  
  4. ffffggggllllAAAAccccccccuuuummmm((((3333GGGG))))                   OOOOppppeeeennnnGGGGLLLL RRRReeeeffffeeeerrrreeeennnncccceeee                   ffffggggllllAAAAccccccccuuuummmm((((3333GGGG))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      ffffggggllllAAAAccccccccuuuummmm - operate on the accumulation buffer
  10.  
  11.  
  12. FFFFOOOORRRRTTTTRRRRAAAANNNN SSSSPPPPEEEECCCCIIIIFFFFIIIICCCCAAAATTTTIIIIOOOONNNN
  13.      SUBROUTINE ffffggggllllAAAAccccccccuuuummmm( INTEGER*4 _o_p,
  14.                           REAL*4 _v_a_l_u_e )
  15.  
  16.  
  17. PPPPAAAARRRRAAAAMMMMEEEETTTTEEEERRRRSSSS
  18.      _o_p     Specifies the accumulation buffer operation.  Symbolic constants
  19.             GGGGLLLL____AAAACCCCCCCCUUUUMMMM, GGGGLLLL____LLLLOOOOAAAADDDD, GGGGLLLL____AAAADDDDDDDD, GGGGLLLL____MMMMUUUULLLLTTTT, and GGGGLLLL____RRRREEEETTTTUUUURRRRNNNN are accepted.
  20.  
  21.      _v_a_l_u_e  Specifies a floating-point value used in the accumulation buffer
  22.             operation.  _o_p determines how _v_a_l_u_e is used.
  23.  
  24. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  25.      The accumulation buffer is an extended-range color buffer.  Images are
  26.      not rendered into it.  Rather, images rendered into one of the color
  27.      buffers are added to the contents of the accumulation buffer after
  28.      rendering.  Effects such as antialiasing (of points, lines, and
  29.      polygons), motion blur, and depth of field can be created by accumulating
  30.      images generated with different transformation matrices.
  31.  
  32.      Each pixel in the accumulation buffer consists of red, green, blue, and
  33.      alpha values.  The number of bits per component in the accumulation
  34.      buffer depends on the implementation. You can examine this number by
  35.      calling ffffggggllllGGGGeeeettttIIIInnnntttteeeeggggeeeerrrrvvvv four times, with arguments GGGGLLLL____AAAACCCCCCCCUUUUMMMM____RRRREEEEDDDD____BBBBIIIITTTTSSSS,
  36.      GGGGLLLL____AAAACCCCCCCCUUUUMMMM____GGGGRRRREEEEEEEENNNN____BBBBIIIITTTTSSSS, GGGGLLLL____AAAACCCCCCCCUUUUMMMM____BBBBLLLLUUUUEEEE____BBBBIIIITTTTSSSS, and GGGGLLLL____AAAACCCCCCCCUUUUMMMM____AAAALLLLPPPPHHHHAAAA____BBBBIIIITTTTSSSS.
  37.      Regardless of the number of bits per component, the range of values
  38.      stored by each component is [-1, 1].  The accumulation buffer pixels are
  39.      mapped one-to-one with frame buffer pixels.
  40.  
  41.      ffffggggllllAAAAccccccccuuuummmm operates on the accumulation buffer.  The first argument, _o_p, is
  42.      a symbolic constant that selects an accumulation buffer operation.  The
  43.      second argument, _v_a_l_u_e, is a floating-point value to be used in that
  44.      operation.  Five operations are specified:  GGGGLLLL____AAAACCCCCCCCUUUUMMMM, GGGGLLLL____LLLLOOOOAAAADDDD, GGGGLLLL____AAAADDDDDDDD,
  45.      GGGGLLLL____MMMMUUUULLLLTTTT, and GGGGLLLL____RRRREEEETTTTUUUURRRRNNNN.
  46.  
  47.      All accumulation buffer operations are limited to the area of the current
  48.      scissor box and are applied identically to the red, green, blue, and
  49.      alpha components of each pixel.  If a ffffggggllllAAAAccccccccuuuummmm operation results in a
  50.      value outside the range [-1, 1], the contents of an accumulation buffer
  51.      pixel component are undefined.
  52.  
  53.      The operations are as follows:
  54.  
  55.      GGGGLLLL____AAAACCCCCCCCUUUUMMMM      Obtains R, G, B, and A values from the buffer currently
  56.                    selected for reading (see ffffggggllllRRRReeeeaaaaddddBBBBuuuuffffffffeeeerrrr).  Each component
  57.                                         n
  58.                    value is divided by 2 -1, where n is the number of bits
  59.                    allocated to each color component in the currently selected
  60.                    buffer.  The result is a floating-point value in the range
  61.  
  62.  
  63.  
  64.                                                                         PPPPaaaaggggeeee 1111
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71. ffffggggllllAAAAccccccccuuuummmm((((3333GGGG))))                   OOOOppppeeeennnnGGGGLLLL RRRReeeeffffeeeerrrreeeennnncccceeee                   ffffggggllllAAAAccccccccuuuummmm((((3333GGGG))))
  72.  
  73.  
  74.  
  75.                    [0, 1], which is multiplied by _v_a_l_u_e and added to the
  76.                    corresponding pixel component in the accumulation buffer,
  77.                    thereby updating the accumulation buffer.
  78.  
  79.      GGGGLLLL____LLLLOOOOAAAADDDD       Similar to GGGGLLLL____AAAACCCCCCCCUUUUMMMM, except that the current value in the
  80.                    accumulation buffer is not used in the calculation of the
  81.                    new value.  That is, the R, G, B, and A values from the
  82.                                                              n
  83.                    currently selected buffer are divided by 2 -1, multiplied
  84.                    by _v_a_l_u_e, and then stored in the corresponding accumulation
  85.                    buffer cell, overwriting the current value.
  86.  
  87.      GGGGLLLL____AAAADDDDDDDD        Adds _v_a_l_u_e to each R, G, B, and A in the accumulation
  88.                    buffer.
  89.  
  90.      GGGGLLLL____MMMMUUUULLLLTTTT       Multiplies each R, G, B, and A in the accumulation buffer
  91.                    by _v_a_l_u_e and returns the scaled component to its
  92.                    corresponding accumulation buffer location.
  93.  
  94.      GGGGLLLL____RRRREEEETTTTUUUURRRRNNNN     Transfers accumulation buffer values to the color buffer or
  95.                    buffers currently selected for writing.  Each R, G, B, and
  96.                    A component is multiplied by _v_a_l_u_e, then multiplied by
  97.                     n                             n
  98.                    2 -1, clamped to the range [0,2 -1], and stored in the
  99.                    corresponding display buffer cell.  The only fragment
  100.                    operations that are applied to this transfer are pixel
  101.                    ownership, scissor, dithering, and color writemasks.
  102.  
  103.      To clear the accumulation buffer, call ffffggggllllCCCClllleeeeaaaarrrrAAAAccccccccuuuummmm with R, G, B, and A
  104.      values to set it to, then call ffffggggllllCCCClllleeeeaaaarrrr with the accumulation buffer
  105.      enabled.
  106.  
  107. NNNNOOOOTTTTEEEESSSS
  108.      Only pixels within the current scissor box are updated by a ffffggggllllAAAAccccccccuuuummmm
  109.      operation.
  110.  
  111. EEEERRRRRRRROOOORRRRSSSS
  112.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____EEEENNNNUUUUMMMM is generated if _o_p is not an accepted value.
  113.  
  114.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____OOOOPPPPEEEERRRRAAAATTTTIIIIOOOONNNN is generated if there is no accumulation buffer or
  115.      if the  _d_r_a_w drawable is not identical to the _r_e_a_d drawable (see
  116.      ffffggggllllXXXXMMMMaaaakkkkeeeeCCCCuuuurrrrrrrreeeennnnttttRRRReeeeaaaaddddSSSSGGGGIIII).
  117.  
  118.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____OOOOPPPPEEEERRRRAAAATTTTIIIIOOOONNNN is generated if ffffggggllllAAAAccccccccuuuummmm is executed between the
  119.      execution of ffffggggllllBBBBeeeeggggiiiinnnn and the corresponding execution of ffffggggllllEEEEnnnndddd.
  120.  
  121. AAAASSSSSSSSOOOOCCCCIIIIAAAATTTTEEEEDDDD GGGGEEEETTTTSSSS
  122.      ffffggggllllGGGGeeeetttt with argument GGGGLLLL____AAAACCCCCCCCUUUUMMMM____RRRREEEEDDDD____BBBBIIIITTTTSSSS
  123.      ffffggggllllGGGGeeeetttt with argument GGGGLLLL____AAAACCCCCCCCUUUUMMMM____GGGGRRRREEEEEEEENNNN____BBBBIIIITTTTSSSS
  124.      ffffggggllllGGGGeeeetttt with argument GGGGLLLL____AAAACCCCCCCCUUUUMMMM____BBBBLLLLUUUUEEEE____BBBBIIIITTTTSSSS
  125.      ffffggggllllGGGGeeeetttt with argument GGGGLLLL____AAAACCCCCCCCUUUUMMMM____AAAALLLLPPPPHHHHAAAA____BBBBIIIITTTTSSSS
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.                                                                         PPPPaaaaggggeeee 2222
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139. ffffggggllllAAAAccccccccuuuummmm((((3333GGGG))))                   OOOOppppeeeennnnGGGGLLLL RRRReeeeffffeeeerrrreeeennnncccceeee                   ffffggggllllAAAAccccccccuuuummmm((((3333GGGG))))
  140.  
  141.  
  142.  
  143. MMMMAAAACCCCHHHHIIIINNNNEEEE DDDDEEEEPPPPEEEENNNNDDDDEEEENNNNCCCCIIIIEEEESSSS
  144.      On InfiniteReality systems the following restrictions apply:
  145.  
  146.           1.  When _o_p is GGGGLLLL____RRRREEEETTTTUUUURRRRNNNN, _v_a_l_u_e must be greater than or equal to
  147.               -4.0 and strictly less than 4.0.  If _v_a_l_u_e is outside this
  148.               range, the results are undefined.
  149.  
  150.           2.  For other values of _o_p, _v_a_l_u_e must be greater than or equal to
  151.               -1.0 and strictly less than 1.0.  If _v_a_l_u_e is outside this
  152.               range, the results are undefined.
  153.  
  154.      RealityEngine, RealityEngine2, and VTX systems do not support negative
  155.      values in the accumulation buffer.
  156.  
  157.  
  158. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  159.      ffffggggllllBBBBlllleeeennnnddddFFFFuuuunnnncccc, ffffggggllllCCCClllleeeeaaaarrrr, ffffggggllllCCCClllleeeeaaaarrrrAAAAccccccccuuuummmm, ffffggggllllCCCCooooppppyyyyPPPPiiiixxxxeeeellllssss, ffffggggllllGGGGeeeetttt, ffffggggllllLLLLooooggggiiiiccccOOOOpppp,
  160.      ffffggggllllPPPPiiiixxxxeeeellllSSSSttttoooorrrreeee, ffffggggllllPPPPiiiixxxxeeeellllTTTTrrrraaaannnnssssffffeeeerrrr, ffffggggllllRRRReeeeaaaaddddBBBBuuuuffffffffeeeerrrr, ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss,
  161.      ffffggggllllSSSScccciiiissssssssoooorrrr, ffffggggllllSSSStttteeeennnncccciiiillllOOOOpppp
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.                                                                         PPPPaaaaggggeeee 3333
  199.  
  200.  
  201.  
  202.